package haut.util;

import haut.util.exception.DataException;

/** <code>DataCheck</code>是一个数据检查类，
 * 用于检查数据的合法性,
 * 当数据不合法时向外抛出异常。
 * @author MingJie Li
 * */

public abstract class DataCheck {

    /** 这是一个静态方法，
     * 用于检查用户参数是否合法，
     * 不合法向外抛出异常。
     * @param id 学/工号
     * @param name 姓名
     * @throws haut.util.exception.DataException
     * */
    public static void personCheck(String id, String name) throws DataException {
        int len = id.length();

        if(len != 8) {
            throw new DataException("学/工号的长度应为8位！");
        }
        for(int i = 0; i < len; ++i) {
            if(!Character.isDigit(id.charAt(i))) {
                throw new DataException("学/工号由8位数字组成！");
            }
        }
    }

    /** 这是一个静态方法，
     * 用于检查项目参数是否合法，
     * 不合法向外抛出异常。
     * @param name 项目名
     * @throws haut.util.exception.DataException
     * */
    public static void eventsCheck(String id, String name, Time time, String place) throws DataException {
        int idLen = id.length();

        int yearLen = time.year.length();
        int monthLen = time.month.length();
        int dayLen = time.day.length();

        if(idLen != 8) {
            throw new DataException("项目编号的长度应为4位！");
        }
        for(int i = 0; i < idLen; ++i) {
            if(!Character.isDigit(id.charAt(i))) {
                throw new DataException("项目编号由4位数字组成！");
            }
        }

        for(int i = 0; i < yearLen; ++i) {
            if(!Character.isDigit(time.year.charAt(i))) {
                throw new DataException("日期非法！");
            }
        }

        for(int i = 0; i < monthLen; ++i) {
            if(!Character.isDigit(id.charAt(i))) {
                throw new DataException("日期非法！");
            }
        }

        for(int i = 0; i < dayLen; ++i) {
            if(!Character.isDigit(id.charAt(i))) {
                throw new DataException("日期非法！");
            }
        }
    }
}
